package com.pc.admin.util;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.*;

@Slf4j
public class CollectionUtils {

    /**
     * List集合对象是否为null或者集合中没有数据
     */
    public static boolean listNull(List list) {
        return Objects.isNull(list) || list.size() == 0;
    }

    /**
     * List集合对象是否不为null且集合中有数据
     */
    public static boolean listNotNull(List list) {
        return !CollectionUtils.listNull(list);
    }


    /**
     * 将实体类List转换成mapList 并将时间转换为日期,并添加上序号
     *
     * @param dataList 实体类list
     * @return map列表
     */
    public static <T> List<Map<String, Object>> beanListToMapList(List<T> dataList) {
        List<Map<String, Object>> mapList = new ArrayList<>();
        if(listNull(dataList)){
            return mapList;
        }
        int serialNo = 1;
        for (T dto : dataList) {
            //bean转换成map
            Map<String, Object> map = BeanUtil.beanToMap(dto);
            //添加序号
            map.put("serialNo",serialNo);
            serialNo++;
            if (CollectionUtil.isNotEmpty(map)) {
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                    if (Objects.nonNull(entry.getValue()) && entry.getValue() instanceof Date) {
                        //格式化日期
                        map.put(entry.getKey(), DateUtils.dateFormat((Date) entry.getValue(), DateUtils.DATE_PATTERN));
                    }
                }
                mapList.add(map);
            }
        }
        return mapList;
    }

}
